' Copyright 2011-2012 Martin Leidel
'
' This software is provided 'as-is', without any express or implied
' warranty.  In no event will the authors be held liable for any damages
' arising from the use of this software.
' 
' Permission is granted to anyone to use this software for any purpose,
' including commercial applications, and to alter it and redistribute it
' freely, subject to the following restrictions:
' 
' 1. The origin of this software must not be misrepresented; you must not
' claim that you wrote the original software. If you use this software
' in a product, an acknowledgment in the product documentation would be
' appreciated but is not required.
' 2. Altered source versions must be plainly marked as such, and must not be
' misrepresented as being the original software.
' 3. This notice may not be removed or altered from any source distribution.

Strict

Private

#If( TARGET <> "android" And TARGET <> "html5" And TARGET <> "ios" )
  #Error "MNet is currently not available for target '${TARGET}'."
#End If

Import "native/mnet.${TARGET}.${LANG}"

Public

Extern

'Http stuff
Class Http = "MNet_Http"
  Method Get:String( url:String, timeoutConnection:Int = 3000, timeoutSocket:Int = 5000 )
  Method AGet:String( url:String, timeoutConnection:Int = 3000, timeoutSocket:Int = 5000 )
  Method GetResult:String()
End Class

'Pubnub
Class Pubnub = "MNet_Pubnub"
  Method Init:Void( publishKey:String, subscribeKey:String, secretKey:String = "", sslOn:Int = 0 )
  Method Subscribe:Void( channelID:String )
  Method GetChannel:PubnubChannel()
End Class

Class PubnubChannel = "MNet_PubnubChannel"
  Method Send:Void( value:String )
  Method Connected:Int()
  Method MessageAvailable:Int()
  Method NextMessage:String()
  Method Fetch:Void( amount:Int )
  Method Fetching:Int()
  Method FetchAvailable:Int()
  Method NextFetch:String()
  Method ChannelID:String()
End Class
